package cn.oscar.controller;

import cn.oscar.service.UserService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import commonUtils.dto.UserDTO;
import commonUtils.entities.Restful;
import commonUtils.entities.User;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@Slf4j
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 用户信息分页查询
     * @param page 当前页码
     * @param pageSize 一页显示的数据量
     * @param name 筛选的字符串信息
     * @return 返回分页查询结果
     */
    @GetMapping("/page")
    public Restful<Page<UserDTO>> selectByPage(int page, int pageSize, String name){
        return userService.selectByPage(page,pageSize,name);
    }

    /**
     * 用户信息删除
     * @param ids 前端传来的删除的ids
     * @return 返回是否逻辑删除成功信息
     */
    @DeleteMapping
    public Restful<String> deleteUser(@RequestParam Long[] ids){
        return userService.deleteUser(ids);
    }

    /**
     * 用户信息更新
     * @param user 用户信息
     * @return 返回是否更新成功信息
     */
    @PutMapping
    public Restful<String> updateUser(@RequestBody User user){
        return userService.updateByUser(user);
    }

    /**
     * 新增用户信息
     * @param user 用户信息
     * @return 返回是否新增成功
     */
    @PostMapping
    public Restful<String> addUser(@RequestBody User user){
        return userService.saveUser(user);
    }

    /**
     * 根据用户id查询用户信息
     * @param id 用户id
     * @return 返回用户信息
     */
    @GetMapping("/{id}")
    public Restful<User> selectUserById(@PathVariable Long id){
        return userService.selectById(id);
    }

    /**
     * 修改用户状态为1
     * @param ids 用户id
     * @return 返回是否修改成功
     */
    @PostMapping("/status/0")
    public Restful<String> updateChangeStatusTo1(@RequestParam Long[] ids){
        return userService.changeStatus21(ids);
    }

    /**
     * 修改用户状态为0
     * @param ids 用户id
     * @return 返回是否修改成功
     */
    @PostMapping("/status/1")
    public Restful<String> updateChangeStatusTo0(@RequestParam Long[] ids){
        return userService.changeStatus20(ids);
    }




}
